/*
  调接口封装文件
  1.公司里面的调接口的方法都是封装
  2.线上小程序或者生产版本
  1）开发环境 :代码正在开发 dev development 
  2) 测试环境：代码刚写完 提交给测试测 测试使用的环境 test环境
  3）预生产环境 ：内测环境
  4）生产环境：线上环境 master环境  production环境 （明天上生产）
  2.在本地我们并没有node的服务器 并且部署环境就导致我们并处理模块化的JS
    模块化的JS是通过node的requuire.js的生态环境进行的但是小程序的编辑自带了
    require.js能让我们做到低耦合高内聚
  3.在公司项目里面所有方法存在一样的我们就会将他进行封装，这个好处在减少项目中的重复代码，所以去了公司 我们并不需要看懂他的所有代码 我们只需要复制粘贴看他这个方法最后会达成什么效果 我直接拿过来用 因为啊公司的封装的代码往往非常复杂

*/ 
// https://api-hmugo-web.itheima.net/api/public/v1/
// https://api-hmugo-web.itheima.net/api/public/v1/home/swiperdata
// let configurl = "https://api-hmugo-web.bendi.net";//域名
// let configurl = "https://api-hmugo-web.ceshi.net";//域名
let configurl = "http://api-hmugo-web.itheima.net";//域名
// /api/public/v1/ 目录
// 第三方接口目录
let baseurl ={
  masterUrl:"/api/public/v1/",//主目录
  threeUrl:"第三方接口目录",
  uploadUrl:"上传接口目录",
  downloadUrl:"下载接口目录"
}
// configurl+baseurl.marterUrl+"home/swiperdata"
// configurl+baseurl.threeUrl+"home/swiperdata"
/*
  接口调用的函数封装方法（语义化）
  *模块的入参
   *url 服务器的地址
   *data 请求的参数
   *method的请求的方式
   * 请求成功的回调函数
   * 请求失败的回调函数
   * 该接口是否需要登录
*/ 
function request(
  url,
  data={},
  method="get",
  doSuccess,//function doSuccess(res){}
  dofail = function(){},
  islogin=false
){
  let header = {};//头部
  if(islogin){
    // 如果需要登录并且用没有登录我们需要让用户登录
    header={
      // 小程序登录会返回一个值给我们 我们俗称这个值为token 
      // 登录成功我们会把token存在缓存中 
      // 当调用其他接口时候需要登录并且用没有登录我们就可以判断缓存中有没有token
      // 如果没有token我们就跳转到登录页面 弹出登录弹窗
      // 如果有我们就在header里面加入token
    }
  }
  wx.request({
    url: `${configurl}${baseurl.masterUrl}${url}`,//地址
    data,//传入的数据
    method,//请求方式
    header,//头部
    success:res=>{//接口调用成功的回调
      // res返回的数据
      doSuccess(res)
    },
    fail:err=>{//接口调用失败的回调
      // err 返回失败内容
      dofail(err)
    }

  })
}
module.exports = {request}//module.exports 模块化抛出 该JS文件中哪些函数